// 1. 引入Node.js内置模块：fs（文件系统，处理文件流）、stream（流，用于Transform转换流）
const fs = require('fs');
const { Transform } = require('stream');

// 2. 自定义转换流：将读取到的字符转为大写
// Transform流用于“中间处理数据”（可读流→转换流→可写流）
const toUpperCaseTransform = new Transform({
  // _transform是Transform流的核心方法，处理每一批数据
  transform(chunk, encoding, callback) {
    // chunk：当前读取到的数据块（默认是Buffer类型）
    // 转为字符串→转大写→传给下一个流（可写流）
    const upperChunk = chunk.toString().toUpperCase();
    this.push(upperChunk); // 将处理后的数据推到输出队列
    callback(); // 通知当前数据块处理完成，可继续处理下一块
  }
});

// 3. 创建可读流：读取from.txt的内容
const readStream = fs.createReadStream('./from.txt'); 
// 4. 创建可写流：将数据写入to.txt（若文件不存在会自动创建，存在则覆盖）
const writeStream = fs.createWriteStream('./to.txt');

// 5. 管道连接：可读流 → 转换流 → 可写流（自动处理“背压”，避免内存溢出）
readStream.pipe(toUpperCaseTransform).pipe(writeStream);

// 6. 监听流结束事件，提示执行完成
writeStream.on('finish', () => {
  console.log('文件转换完成！已将from.txt内容转为大写写入to.txt');
});